package com.example.myproject.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    /**
     * RedisConnectionFactory：创建 Lettuce 连接工厂，
     * Spring Boot 默认会根据 spring.redis.* 的配置来初始化它。
     */
    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory();
    }

    /**
     * RedisTemplate：定义 key、value 的序列化器，
     * 并注入上面的 RedisConnectionFactory。
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        // 设置 key 序列化器
        template.setKeySerializer(new StringRedisSerializer());
        // 设置 value 序列化器（可根据需求换成 JSON 序列化器）
        template.setValueSerializer(new StringRedisSerializer());
        template.setConnectionFactory(factory);
        return template;
    }
}